#include "CudaParam.h"

EpiModel* model = NULL;

dRandVec* rand_vec = NULL;

dPersonVec* ppl_vec = NULL; 
dCommunityVec* comm_vec = NULL;
dTractVec* tract_vec = NULL;

// comm_worker* are unchanging vectors after cudaInitialization
dCommWorkerVec* comm_worker_vec = NULL; // information about who are the workers (non-residents) in this community
dIdxVec* comm_worker_start_vec = NULL; // ith element containing the start index of comm_worker_vec for community i
dIdxVec* comm_worker_end_vec = NULL;  // ith element containing the end index of comm_worker_vec for community i

// comm_visistor* dynamic change
dCommVisitorVec* comm_visitor_vec = NULL; // information about who are visitors in this community
dIdxVec* comm_visitor_start_vec = NULL; // ith element containing the start index of comm_visitor_vec for community i
dIdxVec* comm_visitor_end_vec = NULL; // ith element containing the end index of comm_visitor_vec for community i

// counting iterator, no change after cudaInitialization
dCommWorkerVec* comm_worker_counter = NULL;
dCommVisitorVec* comm_visitor_counter = NULL;

// use in night TAP
unsigned int* nNumTAPDone = NULL;
unsigned int* nNumWantAV = NULL;
unsigned int* nNumWantVaccine = NULL;
unsigned int* nNumAntiviralsUsed = NULL;

cudaError err;
